﻿Imports System.IO
Imports System.Text.RegularExpressions

Public Class ClassChercheFichiers
    'Classe permettant la recherche de fichiers
    Public Enum OptionMarqueur As Byte
        Inactif = 0
        AuMoinsUn = 1
        Tous = 2
    End Enum
    Private sMasque As String
    Private sDossier As String
    Private bRecursif As Boolean
    Private bRechercheReseau As Boolean
    Private sInclusRegex As String
    Private bInclusRegexActif As Boolean
    Private sExclusRegex As String
    Private bExclusRegexActif As Boolean
    Private oMarqueursActifs As OptionMarqueur
    Private oTexteMarque As OptionMarqueur
    Private oTexteExtrait As OptionMarqueur
    Private dDateMajApres As String
    Private dDateMajAvant As String
    Private dDateCreationApres As String
    Private dDateCreationAvant As String
    Private lTailleMax As Long
    Public Trouves As ClassColDoc
    Public Ordinateurs As System.Collections.Specialized.StringCollection

    Public Property Masque As String
        Get
            Return SMasque
        End Get
        Set(value As String)
            If sMasque <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.Masque=" & Chr(34) & value & Chr(34))
            sMasque = value
        End Set
    End Property

    Public Property Dossier As String
        Get
            Return sDossier
        End Get
        Set(value As String)
            If sDossier <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.Dossier=" & Chr(34) & value & Chr(34))
            sDossier = value
        End Set
    End Property

    Public Property Recursif As Boolean
        Get
            Return BRecursif
        End Get
        Set(value As Boolean)
            If bRecursif <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.Recursif=" & value)
            bRecursif = value
        End Set
    End Property

    Public Property RechercheReseau As Boolean
        Get
            Return BRechercheReseau
        End Get
        Set(value As Boolean)
            If bRechercheReseau <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.RechercheReseau=" & value)
            bRechercheReseau = value
        End Set
    End Property

    Public Property InclusRegex As String
        Get
            Return SInclusRegex
        End Get
        Set(value As String)
            If sInclusRegex <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.InclusRegex=" & Chr(34) & value & Chr(34))
            sInclusRegex = value
        End Set
    End Property

    Public Property InclusRegexActif As Boolean
        Get
            Return BInclusRegexActif
        End Get
        Set(value As Boolean)
            If bInclusRegexActif <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.InclusRegexActif=" & value)
            bInclusRegexActif = value
        End Set
    End Property

    Public Property ExclusRegex As String
        Get
            Return SExclusRegex
        End Get
        Set(value As String)
            If sExclusRegex <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.ExclusRegex=" & Chr(34) & value & Chr(34))
            sExclusRegex = value
        End Set
    End Property

    Public Property ExclusRegexActif As Boolean
        Get
            Return BExclusRegexActif
        End Get
        Set(value As Boolean)
            If bExclusRegexActif <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.ExclusRegexActif=" & value)
            bExclusRegexActif = value
        End Set
    End Property

    Public Property MarqueursActifs As OptionMarqueur
        Get
            Return OMarqueursActifs
        End Get
        Set(value As OptionMarqueur)
            If oMarqueursActifs <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.MarqueursActifs=" & value)
            oMarqueursActifs = value
        End Set
    End Property

    Public Property TexteMarque As OptionMarqueur
        Get
            Return OTexteMarque
        End Get
        Set(value As OptionMarqueur)
            If oTexteMarque <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.TexteMarque=" & value)
            oTexteMarque = value
        End Set
    End Property

    Public Property TexteExtrait As OptionMarqueur
        Get
            Return OTexteExtrait
        End Get
        Set(value As OptionMarqueur)
            If oTexteMarque <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.TexteMarque=" & value)
            oTexteExtrait = value
        End Set
    End Property

    Public Property DateMajApres As String
        Get
            Return dDateMajApres.ToString
        End Get
        Set(value As String)
            If dDateMajApres <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.DateMajApres=" & Chr(34) & value & Chr(34))
            If IsDate(value) Then
                dDateMajApres = value
            Else
                dDateMajApres = ""
            End If
        End Set
    End Property

    Public Property DateMajAvant As String
        Get
            Return dDateMajAvant.ToString
        End Get
        Set(value As String)
            If dDateMajAvant <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.DateMajAvant=" & Chr(34) & value & Chr(34))
            If IsDate(value) Then
                dDateMajAvant = value
            Else
                dDateMajAvant = ""
            End If
        End Set
    End Property

    Public Property DateCreationApres As String
        Get
            Return dDateCreationApres.ToString
        End Get
        Set(value As String)
            If dDateCreationApres <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.DateCreationApres=" & Chr(34) & value & Chr(34))
            If IsDate(value) Then
                dDateCreationApres = value
            Else
                dDateCreationApres = ""
            End If
        End Set
    End Property

    Public Property DateCreationAvant As String
        Get
            Return dDateCreationAvant.ToString
        End Get
        Set(value As String)
            If dDateCreationAvant <> value Then AjouterHistoriqueMacro("scpEdit.ChercheFichiers.DateCreationAvant=" & Chr(34) & value & Chr(34))
            If IsDate(value) Then
                dDateCreationAvant = value
            Else
                dDateCreationAvant = ""
            End If
        End Set
    End Property

    Public Property TailleMax As Long
        Get
            Return LTailleMax
        End Get
        Set(value As Long)
            LTailleMax = value
        End Set
    End Property

    Public Sub New()
        Me.Ordinateurs = New System.Collections.Specialized.StringCollection
        Me.Trouves = New ClassColDoc
        Call Me.Reset()
    End Sub

    Public Sub Reset()
        Me.Masque = ""
        Me.Dossier = ""
        Me.Recursif = False
        Me.RechercheReseau = False
        Me.Ordinateurs.Clear()
        Me.Trouves.Clear()
        Me.InclusRegex = ""
        Me.InclusRegexActif = False
        Me.ExclusRegex = ""
        Me.ExclusRegexActif = False
        MarqueursActifs = OptionMarqueur.Inactif
        TexteMarque = OptionMarqueur.Inactif
        TexteExtrait = OptionMarqueur.Inactif
        DateMajApres = Nothing
        DateMajAvant = Nothing
        DateCreationApres = Nothing
        DateCreationAvant = Nothing
        TailleMax = 0
        AjouterHistoriqueMacro("scpEdit.RechercheFichiers.Reset")
    End Sub

    Public Sub UpdateParam()
        Me.Masque = FormChercher.TextBoxMasque.Text
        Me.Dossier = FormChercher.TextBoxDossiers.Text
        Me.Recursif = FormChercher.CheckBoxRecursion.Checked
        Me.RechercheReseau = FormChercher.RadioButtonDistants.Checked
        Me.Ordinateurs.Clear()
        For Each sOrdi As String In FormChercher.CheckedListBoxPostes.CheckedItems
            Ordinateurs.Add(sOrdi)
        Next
        Me.InclusRegex = FormChercher.TextBoxRegExIn.Text
        Me.InclusRegexActif = FormChercher.CheckBoxRegExIn.Checked
        Me.ExclusRegex = FormChercher.TextBoxRegExOut.Text
        Me.ExclusRegexActif = FormChercher.CheckBoxRegExOut.Checked
        If FormChercher.CheckBoxMarqueurs.Checked Then
            If FormChercher.RadioButtonUnMarqueur.Checked Then
                Me.MarqueursActifs = OptionMarqueur.AuMoinsUn
            Else
                Me.MarqueursActifs = OptionMarqueur.Tous
            End If
        Else
            Me.MarqueursActifs = OptionMarqueur.Inactif
        End If
        If FormChercher.CheckBoxMarques.Checked Then
            If FormChercher.RadioButtonUnSeulMarque.Checked Then
                Me.TexteMarque = OptionMarqueur.AuMoinsUn
            Else
                Me.TexteMarque = OptionMarqueur.Tous
            End If
        Else
            Me.TexteMarque = OptionMarqueur.Inactif
        End If
        If FormChercher.CheckBoxExtrait.Checked Then
            If FormChercher.RadioButtonUnExtrait.Checked Then
                Me.TexteExtrait = OptionMarqueur.AuMoinsUn
            Else
                Me.TexteExtrait = OptionMarqueur.Tous
            End If
        Else
            Me.TexteExtrait = OptionMarqueur.Inactif
        End If
        If FormChercher.CheckBoxMajPost.Checked Then
            Me.DateMajApres = FormChercher.DateTimePickerMajPost.Value.ToString
        Else
            Me.DateMajApres = ""
        End If
        If FormChercher.CheckBoxMajAnt.Checked Then
            Me.DateMajAvant = FormChercher.DateTimePickerMajAnt.Value.ToString
        Else
            Me.DateMajAvant = ""
        End If
        If FormChercher.CheckBoxCreationAnt.Checked Then
            Me.DateCreationAvant = FormChercher.DateTimePickerCreationAnt.Value.ToString
        Else
            Me.DateCreationAvant = ""
        End If
        If FormChercher.CheckBoxCreationPost.Checked Then
            Me.DateCreationApres = FormChercher.DateTimePickerCreationPost.Value.ToString
        Else
            Me.DateCreationApres = ""
        End If
    End Sub

    Public Sub UpdateForm()
        FormChercher.TextBoxMasque.Text = Me.Masque
        FormChercher.TextBoxDossiers.Text = Me.Dossier
        FormChercher.CheckBoxRecursion.Checked = Me.Recursif
        FormChercher.RadioButtonDistants.Checked = Me.RechercheReseau
        For Each sOrdi As String In Ordinateurs
            If Not FormChercher.CheckedListBoxPostes.Items.Contains(sOrdi) Then FormChercher.CheckedListBoxPostes.Items.Add(sOrdi)
            FormChercher.CheckedListBoxPostes.Items(sOrdi).Checked = True
        Next
        FormChercher.TextBoxRegExIn.Text = Me.InclusRegex
        FormChercher.CheckBoxRegExIn.Checked = Me.InclusRegexActif
        FormChercher.TextBoxRegExOut.Text = Me.ExclusRegex
        FormChercher.CheckBoxRegExOut.Checked = Me.ExclusRegexActif
        Select Case Me.MarqueursActifs
            Case OptionMarqueur.AuMoinsUn
                FormChercher.CheckBoxMarqueurs.Checked = True
                FormChercher.RadioButtonUnMarqueur.Checked = True
            Case OptionMarqueur.Tous
                FormChercher.CheckBoxMarqueurs.Checked = True
                FormChercher.RadioButtonTousMarqueurs.Checked = True
            Case OptionMarqueur.Inactif
                FormChercher.CheckBoxMarqueurs.Checked = False
        End Select
        Select Case Me.TexteMarque
            Case OptionMarqueur.AuMoinsUn
                FormChercher.CheckBoxMarques.Checked = True
                FormChercher.RadioButtonUnSeulMarque.Checked = True
            Case OptionMarqueur.Tous
                FormChercher.CheckBoxMarques.Checked = True
                FormChercher.RadioButtonTouslesmarques.Checked = True
            Case OptionMarqueur.Inactif
                FormChercher.CheckBoxMarques.Checked = False
        End Select
        Select Case Me.TexteExtrait
            Case OptionMarqueur.AuMoinsUn
                FormChercher.CheckBoxExtrait.Checked = True
                FormChercher.RadioButtonUnExtrait.Checked = True
            Case OptionMarqueur.Tous
                FormChercher.RadioButtonTousExtrait.Checked = True
                FormChercher.RadioButtonTouslesmarques.Checked = True
            Case OptionMarqueur.Inactif
                FormChercher.CheckBoxExtrait.Checked = False
        End Select
        If Me.DateMajApres = "" Then
            FormChercher.CheckBoxMajPost.Checked = False
        Else
            FormChercher.CheckBoxMajPost.Checked = True
            FormChercher.DateTimePickerMajPost.Value = CDate(Me.DateMajApres)
        End If
        If Me.DateMajAvant = "" Then
            FormChercher.CheckBoxMajAnt.Checked = False
        Else
            FormChercher.CheckBoxMajAnt.Checked = True
            FormChercher.DateTimePickerMajAnt.Value = CDate(Me.DateMajAvant)
        End If
        If Me.DateCreationAvant = "" Then
            FormChercher.CheckBoxCreationAnt.Checked = False
        Else
            FormChercher.CheckBoxCreationAnt.Checked = True
            FormChercher.DateTimePickerCreationAnt.Value = CDate(Me.DateCreationAvant)
        End If
        If Me.DateCreationApres = "" Then
            FormChercher.CheckBoxCreationPost.Checked = False
        Else
            FormChercher.CheckBoxCreationPost.Checked = True
            FormChercher.DateTimePickerCreationPost.Value = CDate(Me.DateCreationApres)
        End If
    End Sub

    Public Sub UpdateChecked()
        For Each oItem As ListViewItem In FormChercher.ListView1.Items
            Dim oDocTrouve As ClassDocument = oItem.Tag
            Me.Trouves(oDocTrouve.ID).Checked = oItem.Checked
        Next
    End Sub

    Public Sub CheckTrouve(ByVal ID As String, ByVal Checked As Boolean)
        If Me.Trouves.Contains(ID) Then Me.Trouves.Item(ID).Checked = Checked
    End Sub

    Public Sub Executer()
        FormErreur.Reset()
        AjouterHistoriqueMacro("scpEdit.ChercheFichiers.Executer")
        If Not RechercheReseau Then
            'Poste local
            ChercherFichiers(My.Computer.Name, Me.Dossier)
        Else
            'Recherche sur les postes distants
            If Me.Ordinateurs.Count > 0 Then
                FormChercher.ToolStripProgressBar1.Minimum = 1
                FormChercher.ToolStripProgressBar1.Maximum = Me.Ordinateurs.Count + 1
                FormChercher.ToolStripProgressBar1.Visible = True
                FormChercher.ToolStripProgressBar1.Value = 1
                For Each sCOmputerName As String In Me.Ordinateurs
                    FormChercher.ToolStripStatusLabel1.Text = sCOmputerName
                    FormChercher.ToolStripProgressBar1.Value += 1
                    My.Application.DoEvents()
                    Dim sPathSource As String = Commun.ConvertToAdminPath(sCOmputerName, Me.Dossier)
                    Dim bPing As Boolean = False
                    Try
                        bPing = My.Computer.Network.Ping(sCOmputerName)
                        If bPing Then
                            ChercherFichiers(sCOmputerName, sPathSource)
                        Else
                            FormErreur.AjouteErreur(sCOmputerName & ": Ne répond pas (ping)")
                        End If
                    Catch ex As Exception
                        FormErreur.AjouteErreur(sCOmputerName & ": Erreur réseau - non défini dans le DNS")
                    End Try
                Next
                FormChercher.ToolStripProgressBar1.Visible = False
                FormChercher.ToolStripStatusLabel1.Text = ""
            End If
        End If
        FormErreur.ShowSiErreur()
    End Sub

    Private Sub ChercherFichiers(ByVal sComputerName As String, ByVal sChemin As String)
        If My.Computer.FileSystem.DirectoryExists(sChemin) Then
            Dim oDirInfo As DirectoryInfo = My.Computer.FileSystem.GetDirectoryInfo(sChemin)
            If Me.Masque = "" Then Me.Masque = "*.*"
            Dim oOptions As System.IO.SearchOption = SearchOption.TopDirectoryOnly
            If Me.Recursif Then oOptions = SearchOption.AllDirectories
            For Each oFileInfo As FileInfo In oDirInfo.GetFiles(Me.Masque, oOptions)
                My.Application.DoEvents()
                Dim oNewDoc As New ClassDocument(oFileInfo.FullName, False)
                oNewDoc.Ordinateur = sComputerName
                'On lit le fichier au besoin seulement
                If Me.MarqueursActifs <> OptionMarqueur.Inactif Or Me.InclusRegexActif Or Me.ExclusRegexActif Or Me.TexteMarque <> OptionMarqueur.Inactif Or Me.TexteExtrait <> OptionMarqueur.Inactif Then oNewDoc.ChargerContenu()
                'On filtre
                Dim bResult As Boolean = True
                'Les propriétés (dates)
                If Me.DateCreationApres <> "" Then
                    If Not (oFileInfo.CreationTime > CDate(Me.DateCreationApres)) Then bResult = False
                End If
                If bResult And Me.DateCreationAvant <> "" Then
                    If Not (oFileInfo.CreationTime < CDate(Me.DateCreationAvant)) Then bResult = False
                End If
                If bResult And Me.DateMajApres <> "" Then
                    If Not (oFileInfo.LastWriteTime > CDate(Me.DateMajApres)) Then bResult = False
                End If
                If bResult And Me.DateMajAvant <> "" Then
                    If Not (oFileInfo.LastWriteTime < CDate(Me.DateMajAvant)) Then bResult = False
                End If
                If bResult And Me.TailleMax > 0 Then
                    If Not (oFileInfo.Length < (Me.TailleMax * 1024)) Then bResult = False
                End If
                'Les marqueurs 
                If bResult And Me.MarqueursActifs <> OptionMarqueur.Inactif And oNewDoc.Loaded Then
                    Dim bTrouveUn As Boolean = False
                    Dim bTrouveTous As Boolean = True
                    For Each oItemMarqueur As ListViewItem In Form1.ListViewMarqueurs.CheckedItems
                        Dim oMarqueur As ClassMarqueur = oItemMarqueur.Tag
                        Dim Options As RegexOptions = RegexOptions.Multiline
                        If oMarqueur.SensibleCasse = Boolean.FalseString Then Options = Options Or RegexOptions.IgnoreCase
                        If Regex.IsMatch(oNewDoc.Contenu, oMarqueur.Masque, Options) Then
                            bTrouveUn = True
                        Else
                            bTrouveTous = False
                        End If
                    Next
                    If Me.MarqueursActifs = OptionMarqueur.AuMoinsUn Then
                        If Not bTrouveUn Then bResult = False
                    Else
                        If Not bTrouveTous Then bResult = False
                    End If
                End If
                'Le texte marqué 
                If bResult And Me.TexteMarque <> OptionMarqueur.Inactif And oNewDoc.Loaded Then
                    Dim bTrouveUn As Boolean = False
                    Dim bTrouveTous As Boolean = True
                    For Each sChaine As String In Form1.GetTexteMarque("")
                        If oNewDoc.Contenu.Contains(sChaine) Then
                            bTrouveUn = True
                        Else
                            bTrouveTous = False
                        End If
                    Next
                    If Me.TexteMarque = OptionMarqueur.AuMoinsUn Then
                        If Not bTrouveUn Then bResult = False
                    Else
                        If Not bTrouveTous Then bResult = False
                    End If
                End If
                'Le texte extrait
                If bResult And Me.TexteExtrait <> OptionMarqueur.Inactif And oNewDoc.Loaded Then
                    Dim bTrouveUn As Boolean = False
                    Dim bTrouveTous As Boolean = True
                    For Each sChaine As String In Form1.GetTexteExtrait()
                        If oNewDoc.Contenu.Contains(sChaine) Then
                            bTrouveUn = True
                        Else
                            bTrouveTous = False
                        End If
                    Next
                    If Me.TexteExtrait = OptionMarqueur.AuMoinsUn Then
                        If Not bTrouveUn Then bResult = False
                    Else
                        If Not bTrouveTous Then bResult = False
                    End If
                End If
                'Le masque positif
                If bResult And Me.InclusRegexActif And oNewDoc.Loaded Then
                    If Not Regex.IsMatch(oNewDoc.Contenu, Me.InclusRegex, RegexOptions.IgnoreCase Or RegexOptions.Multiline) Then bResult = False
                End If
                'Le masque négatif
                If bResult And Me.ExclusRegexActif And oNewDoc.Loaded Then
                    If Regex.IsMatch(oNewDoc.Contenu, ExclusRegex, RegexOptions.IgnoreCase Or RegexOptions.Multiline) Then bResult = False
                End If
                'On ajoute le fichier à la liste si requis
                If bResult And (Not Me.Trouves.Contains(oNewDoc.ID)) Then Me.Trouves.add(oNewDoc.ID, oNewDoc)
            Next
        Else
            FormErreur.AjouteErreur("Dossier " & sChemin & " introuvable sur " & sComputerName & "!")
        End If
    End Sub

    Public Sub ClearTrouves()
        AjouterHistoriqueMacro("scpEdit.ChercheFichiers.ClearTrouves")
        Me.Trouves.Clear()
    End Sub

    Public Sub ImporterListeOrdinateurs(ByVal CheminFichier As String)
        If My.Computer.FileSystem.FileExists(CheminFichier) Then
            AjouterHistoriqueMacro("scpEdit.chercheFichiers.ImporterListeOrdinateurs " & Chr(34) & CheminFichier & Chr(34))
            Dim sContenu As String = My.Computer.FileSystem.ReadAllText(CheminFichier, System.Text.Encoding.Default)
            Me.Ordinateurs.Clear()
            For Each sComputer As String In Split(sContenu, vbCrLf)
                If sComputer <> "" And Not Me.Ordinateurs.Contains(sComputer) Then Me.Ordinateurs.Add(sComputer)
            Next
        End If
    End Sub

    Public Sub ExporterListeOrdinateurs(ByVal CheminFichier As String)
        AjouterHistoriqueMacro("scpEdit.ChercheFichiers.ExporterListeOrdinateurs " & Chr(34) & CheminFichier & Chr(34))
        Dim sContenu As String = ""
        For Each sComputer As String In Me.Ordinateurs
            sContenu &= sComputer & vbCrLf
        Next
        If My.Computer.FileSystem.FileExists(CheminFichier) Then My.Computer.FileSystem.DeleteFile(CheminFichier)
        My.Computer.FileSystem.WriteAllText(CheminFichier, sContenu, False)
    End Sub

    Public Sub Copier()
        AjouterHistoriqueMacro("scpEdit.cherchefichiers.Copier")
        Clipboard.Clear()
        Clipboard.SetText(Me.TrouvesToString())
    End Sub

    Public Sub OuvrirFichiers()
        AjouterHistoriqueMacro("scpEdit.cherchefichiers.OuvrirFichiers")
        Dim bCapture As Boolean = Commun.CaptureMacro
        Commun.CaptureMacro = False
        For Each oDocTrouve As ClassDocument In Me.Trouves
            If oDocTrouve.Checked Then Form1.AjouteDocument(oDocTrouve)
        Next
        Commun.CaptureMacro = bCapture
    End Sub

    Public Sub CopierFichiers(ByVal Chemin As String)
        If My.Computer.FileSystem.DirectoryExists(Chemin) Then
            AjouterHistoriqueMacro("scpEdit.cherchefichiers.CopierFichiers " & Chr(34) & Chemin & Chr(34))
            AjouterHistoriqueMacro("scpEdit.cherchefichiers.OuvrirFichiers")
            Dim bCapture As Boolean = Commun.CaptureMacro
            For Each oDocTrouve As ClassDocument In Me.Trouves
                If oDocTrouve.Checked Then
                    Dim sNouveau As String = Chemin & "\" & oDocTrouve.Ordinateur & "_" & System.IO.Path.GetFileName(oDocTrouve.Chemin)
                    If Not oDocTrouve.Loaded Then oDocTrouve.ChargerContenu()
                    oDocTrouve.EnregistrerSous(sNouveau)
                    Form1.AjouteDocument(oDocTrouve)
                End If
            Next
            Commun.CaptureMacro = bCapture
        End If
    End Sub

    Public Sub NouveauDocument()
        AjouterHistoriqueMacro("scpEdit.cherchefichiers.NouveauDocument")
        Dim bCapture As Boolean = Commun.CaptureMacro
        Commun.CaptureMacro = False
        Form1.Nouveau()
        Form1.DocumentCourant.Contenu = Me.TrouvesToString()
        Form1.RichTextBox1.Text = Form1.DocumentCourant.Contenu
        Commun.CaptureMacro = bCapture
    End Sub

    Private Function TrouvesToString() As String
        Dim sTexte As String = ""
        For Each oDocTrouve As ClassDocument In Me.Trouves
            If oDocTrouve.Checked Then sTexte &= oDocTrouve.Chemin & "," & oDocTrouve.Ordinateur & "," & oDocTrouve.oInfo.Length & "," & oDocTrouve.oInfo.CreationTime & "," & oDocTrouve.oInfo.LastWriteTime & vbCrLf
        Next
        Dim oTextOp As New ClassTextOp
        oTextOp.Operation = ClassTextOp.EnumTextOperation.MettreVirgulesEnColonnes
        sTexte = oTextOp.Transformer(sTexte)
        oTextOp = Nothing
        Return sTexte
    End Function
End Class
